using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class RendimientoDesarrollador : System.Web.UI.Page
{
    ControladoraConsultas controlConsultas = new ControladoraConsultas();
    ControladoraProyectos controlProyectos = new ControladoraProyectos();
    ControladoraECS controlECS = new ControladoraECS();

    protected void Page_Load(object sender, EventArgs e)
    {
        if(!IsPostBack)
        {
            this.llenarCbProyectos();
        }
    }

    private void llenarCbProyectos()
    {
        DataTable lista = this.controlProyectos.solicitarProyectos();
        DataTableReader lector = lista.CreateDataReader();
        while(lector.Read())
        {
            ListItem nuevo = new ListItem(lector.GetValue(0).ToString(), lector.GetValue(1).ToString());
            this.cbProyectos.Items.Add(nuevo);
        }
    }

    protected void cbProyectos_SelectedIndexChanged(object sender, EventArgs e)
    {
        DataTable lista = new DataTable();
        DataTable proyecto = this.controlConsultas.solicitarProyectoCC(int.Parse(this.cbProyectos.SelectedValue));
        DataTableReader lector = proyecto.CreateDataReader();
        lector.Read();
        DateTime inicio = DateTime.Parse(lector.GetValue(2).ToString());
        DateTime final = DateTime.Parse(lector.GetValue(3).ToString());
        TimeSpan diferencia = final.Subtract(inicio);
        this.tbInicio.Text = inicio.ToShortDateString();
        this.tbFinal.Text = final.ToShortDateString();
        this.tbDuracion.Text = diferencia.Days.ToString();

        this.llenarGvECSs(int.Parse(this.cbProyectos.SelectedValue));
    }

    public void llenarGvECSs(int id_proyecto)
    {
        this.graficoDuraciones.CurveList.Clear();
        DataTable final = new DataTable();
        final = this.controlECS.solicitarECSs(id_proyecto);
        final.Columns.Add("DuracionTotal");
        final.Columns.Add("Porcentaje");
        for (int i = 0; i < final.Columns.Count; ++i)
        {
            final.Columns[i].ReadOnly = false;
        }
        DataTableReader lector = final.CreateDataReader();
        int id_ecs;
        int contador = 0;
        while(lector.Read())
        {
            id_ecs = int.Parse(lector.GetValue(1).ToString());
            DataTable historial = this.controlConsultas.solicitarDuracionesPorECS(id_ecs);
            DataTableReader lector2 = historial.CreateDataReader();
            TimeSpan acumulador = new TimeSpan();
            while(lector2.Read())
            {
                DateTime inicio = DateTime.Parse(lector2.GetValue(0).ToString());
                DateTime finalFecha = DateTime.Parse(lector2.GetValue(1).ToString());
                TimeSpan diferencia = finalFecha.Subtract(inicio);
                acumulador = acumulador + diferencia;
            }
            Object[] array = new Object[4];
            array[0] = lector.GetValue(0);
            array[1] = lector.GetValue(1);
            array[2] = acumulador;
            array[3] = (acumulador.Days * 100) / (double)(double.Parse(this.tbDuracion.Text));
            ZedGraph.Web.ZedGraphWebBarItem barra = new ZedGraph.Web.ZedGraphWebBarItem();
            barra.Label = array[1].ToString();
            final.Rows[contador].ItemArray = array;
            this.graficoDuraciones.CurveList.Add(barra);
            ZedGraph.Web.ZedGraphWebPointPair punto = new ZedGraph.Web.ZedGraphWebPointPair();
            punto.X = contador + 1;
            ((ZedGraph.Web.ZedGraphWebBarItem)graficoDuraciones.CurveList[contador]).Fill.Color = System.Drawing.Color.FromArgb(contador * 30, 255 - contador * 30, contador * 30);
            graficoDuraciones.CurveList[contador].Points.Add(punto);
            graficoDuraciones.CurveList[contador].Points[0].Y = double.Parse(array[3].ToString());
            ++contador;
        }
        this.gvECSs.DataSource = null;
        this.gvECSs.DataSource = final;
        this.gvECSs.DataBind();
    }
    protected void graficoDuraciones_RenderGraph(ZedGraph.Web.ZedGraphWeb webObject, System.Drawing.Graphics g, ZedGraph.MasterPane pane)
    {
        pane.AxisChange(g);
    }
}
